package com.zzw.springboot.config;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * Redisson配置类
 */
@Configuration
public class RedissonConfig {

    @Value("${spring.redis.host}")
    private String host;

    @Value("${spring.redis.port}")
    private int port;

    @Value("${spring.redis.password:}")
    private String password;

    @Value("${spring.redis.database:0}")
    private int database;

    /**
     * 配置Redisson客户端
     *
     * @return RedissonClient实例
     */
    @Bean
    public RedissonClient redissonClient() {
        Config config = new Config();

        // 创建单节点模式配置
        String address = "redis://" + host + ":" + port;
        config.useSingleServer()
                .setAddress(address)
                .setDatabase(database);

        // 如果设置了密码，添加密码配置
        if (password != null && !password.isEmpty()) {
            config.useSingleServer().setPassword(password);
        }

        // 默认看门狗续期时间为30秒，续期周期为过期时间的1/3
        config.setLockWatchdogTimeout(30000); // 设置看门狗超时时间（毫秒）

        // 创建并返回RedissonClient实例
        return Redisson.create(config);
    }
}
